3.9 [Sources] Sections
These sections are optional.
Summary
Defines the [Sources]
section content.
All file names specified in this section must be in the directory containing the INF file or in sub-directories of the directory containing the INF file.
The 'common
' architecture modifier in a section tag must not be combined with
other architecture type; doing so will result in a build break.
All paths are relative to the directory containing the INF file. If the filename is listed as myfile.c, the file must be located in the same directory as the INF file. Absolute paths in the filename are prohibited.
There can be multiple sources sections, depending on the target processor.
Example sources sections are listed below. The parsing utility creates a
directory path for each file ($(DEST_DIR)...\MyFile.c
), and looks up the
makefile template for the COMPONENT_TYPE
(EDK) or MODULE_TYPE
(EDK II) to
emit.
It is not permissible to mix EDK and EDK II style files within a module.
The macro, TABLE_NAME
may be used in existing EDK INF files that point to
ACPI tables, this value will be ignored by EDK II build tools.
All HII Unicode format files must be listed in this section as well as any other "source" type file, such as local module header files, Vfr files, etc.
Each source file must be listed only once per section. Files listed in architectural sections are not permitted to be listed in the common architectural section.
This section is not valid for a generated "As Built" binary INF file.
<Sources> ::= "[Sources" [<com_attribs>]* "]" <EOL>
[<TS> "TABLE_NAME" <Eq> <SimpleWord> <EOL>]
<SourceFileStmts>*
<com_attribs> ::= {".common"} {<attribs>}
<attribs> ::= <attrs> ["," <TS> "Sources" <attrs>]*
<attrs> ::= "." <arch>
<SourceFileStmts> ::= {<MacroDefinition>} {<SourceFileEntry>}
<SourceFileEntry> ::= <TS> <Filename> [<Options>] <EOL>
<Options> ::= <FS> [<Family>] [<opt1>]
<opt1> ::= <FS> [<TagName>] [<opt2>]
<opt2> ::= <FS> [<ToolCode>] [<opt3>]
<opt3> ::= <FS> [<FeatureFlagExpress>]
<Family> ::= {"MSFT"} {"GCC"} {"INTEL"} {<Wildcard>}
<TagName> ::= {<ToolWord>} {"*"}
<ToolCode> ::= _CommandCode_
<FeatureFlagExpress> ::= <Boolean>
Parameters
Filename
Paths listed in the filename elements of the [Sources]
section must be
relative to the directory the INF file resides in. Use of "..", "." and "../"
in the directory path is not permitted.
FeatureFlagExpress
When present, the feature flag expression determines whether the entry line is valid. If the feature flag expression evaluates to FALSE, this entry will be ignored by the EDK II build tools.
TagName
A keyword that uniquely identifies a tool chain group; the second field. Wildcard characters are permitted if and only if a command is common to all tools that will be used by a developer. As an example, if the development team only uses IA32 Windows workstations, the ACPI compiler can be specified as:
DEBUG_*_*_ASL_PATH
and RELEASE_*_*_ASL_PATH
CommandCode
A keyword that uniquely identifies a specific command; the fourth field. Several
CommandCode keywords have been predefined, however users may add additional
keywords, with appropriate modifications to buildrule.txt. See table below for
the pre-defined keywords and functional mappings. The wildcard character,
"", is permitted only for the FAMILY
, DLL
and DPATH
attributes (see
*_Attributes** below.)
Family
Family
is keyword that uniquely identifies a tool chain family. The Family
must be either a wildcard character (meaning any Family) or it must match a
defined value for a Family label in the tools_def.txt
file for at least one
tool chain TagName
specified in tools_def.txt
(or the TagName
field that
follows this field in the entry).
Example
[Sources.common]
Diskio.c
Diskio.h
ComponentName.c
[Sources.IA32}
Ia32DiskIo.h